home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / modula2 / module / megabrai.mod < prev    next >
Text File  |  1995-11-25  |  3KB  |  117 lines

  1. IMPLEMENTATION MODULE   MegaBrain;
  2. (* Version*: 20.12.89   00:44*)
  3. FROM Timer IMPORT Start,Stop;
  4. FROM GEMDOS IMPORT PrnOut(* CHAR *) ;
  5. FROM SYSTEM IMPORT  WORD,VAL;
  6. VAR HalbePeriode : LONGCARD;
  7.  
  8.  
  9. PROCEDURE SetFrequence(Frequenz :INTEGER);
  10. BEGIN
  11.    HalbePeriode := 500 DIV Frequenz;
  12. END SetFrequence;
  13.  
  14.  
  15. PROCEDURE Down(EndFrequenz:INTEGER; PeriodenZuwachs:LONGCARD;  status1,status2,
  16.                status01,status02:CHAR);
  17. VAR StopUhr1, EndPeriodenDauer,Ein100telPerioden,Hundert : LONGCARD;
  18.  
  19.  BEGIN
  20.  EndPeriodenDauer := 500 DIV EndFrequenz;
  21.  Hundert := 100;
  22.  Ein100telPerioden := Hundert * HalbePeriode;
  23.  Start(StopUhr1);
  24.    REPEAT
  25.       PrnOut(status1);
  26.       REPEAT
  27.       UNTIL Stop(StopUhr1) > HalbePeriode;
  28.  
  29.       Start(StopUhr1);
  30.       PrnOut(status01);
  31.       REPEAT
  32.       UNTIL Stop(StopUhr1) > HalbePeriode;
  33.  
  34.       Start(StopUhr1);
  35.       PrnOut(status2);
  36.       REPEAT
  37.       UNTIL Stop(StopUhr1) > HalbePeriode;
  38.  
  39.       Start(StopUhr1);
  40.       PrnOut(status02);
  41.       REPEAT
  42.       UNTIL Stop(StopUhr1) > HalbePeriode;
  43.       (* Hier Uhr wieder starten damit die Zeit zum berechnen
  44.       nicht die Frequenz verfälscht !*)
  45.       Start(StopUhr1);
  46.       Ein100telPerioden:= Ein100telPerioden+PeriodenZuwachs;
  47.       HalbePeriode:= Ein100telPerioden DIV Hundert;
  48.    UNTIL EndPeriodenDauer <= HalbePeriode;
  49. END  Down;
  50.  
  51. PROCEDURE Up(EndFrequenz:INTEGER; PeriodenAbnahme:LONGCARD;  status1,status2,
  52.              status01,status02:CHAR);
  53.  VAR StopUhr1, EndPeriodenDauer,Ein100telPerioden,Hundert : LONGCARD;
  54.  
  55.  BEGIN
  56.  EndPeriodenDauer := 500 DIV EndFrequenz;
  57.  Hundert := 100;
  58.  Ein100telPerioden := Hundert * HalbePeriode;
  59.  Start(StopUhr1);
  60.    REPEAT
  61.       PrnOut(status1);
  62.       REPEAT
  63.       UNTIL Stop(StopUhr1) > HalbePeriode;
  64.  
  65.       Start(StopUhr1);
  66.       PrnOut(status01);
  67.       REPEAT
  68.       UNTIL Stop(StopUhr1) > HalbePeriode;
  69.  
  70.       Start(StopUhr1);
  71.       PrnOut(status2);
  72.       REPEAT
  73.       UNTIL Stop(StopUhr1) > HalbePeriode;
  74.  
  75.       Start(StopUhr1);
  76.       PrnOut(status02);
  77.       REPEAT
  78.       UNTIL Stop(StopUhr1) > HalbePeriode;
  79.       (*       *)
  80.       Start(StopUhr1);
  81.       Ein100telPerioden:= Ein100telPerioden-PeriodenAbnahme;
  82.       HalbePeriode:= Ein100telPerioden DIV Hundert;
  83.    UNTIL EndPeriodenDauer >= HalbePeriode;
  84. END  Up;
  85.  
  86. PROCEDURE Stay(Dauer:LONGCARD; status1,status2,status01,status02:CHAR);
  87. VAR StopUhr1,StopUhr2,N1000 :LONGCARD;
  88.  
  89.  BEGIN
  90.  N1000:= 1000;
  91.  Start (StopUhr2);
  92.  Start(StopUhr1);
  93.    REPEAT
  94.       PrnOut(status1);
  95.       REPEAT
  96.       UNTIL Stop(StopUhr1) > HalbePeriode;
  97.  
  98.       Start(StopUhr1);
  99.       PrnOut(status01);
  100.       REPEAT
  101.       UNTIL Stop(StopUhr1) > HalbePeriode;
  102.  
  103.       Start(StopUhr1);
  104.       PrnOut(status2);
  105.       REPEAT
  106.       UNTIL Stop(StopUhr1) > HalbePeriode;
  107.  
  108.       Start(StopUhr1);
  109.       PrnOut(status02);
  110.       REPEAT
  111.       UNTIL Stop(StopUhr1) > HalbePeriode;
  112.       Start(StopUhr1);
  113.    UNTIL Stop(StopUhr2) > N1000*Dauer;
  114. END Stay;
  115.  
  116. END MegaBrain.
  117.